// 引入 axios 库
import axios from 'axios'
// 引入 Toast 组件
import { Toast } from 'vant'

// 设置开发环境与生产环境下 baseURL
// const baseURL = process.env.NODE_ENV === 'development' ? '开发环境下的模拟接口' : '生产环境的真实接口'
// const baseURL = process.env.NODE_ENV === 'development'
//   ? 'http://rap2api.taobao.org/app/mock/284783' // 开发环境
//   : 'http://www.xiongmaoyouxuan.com' // 生产环境
const baseURL = 'http://www.xiongmaoyouxuan.com'

// 创建 axios 实例
const service = axios.create({
  baseURL,
})

// 请求拦截
service.interceptors.request.use(config => {
  // 显示加载中的提示
  Toast.loading({
    message: '加载中...',
    forbidClick: true,
    loadingType: 'spinner',
    duration: 0,
  })
  // 向请求头中添加 TOKEN 数据
  // TODO......
  return config
})

// 响应拦截
service.interceptors.response.use(config => {
  // 有响应数据返回，则关闭加载提示
  Toast.clear()
  // 判断响应返回结果
  if (config.status >= 200 && config.status < 300) {
    // 获取到后端返回数据
    const resData = config.data
    // 判断
    if (resData.code === 200) {
      return resData.data
    } else {
      const e = new Error('接口 code 不为 200')
      e.error = resData
      Promise.reject(e)
    }
  } else {
    const err = new Error('后端接口返回 status 不为 200')
    err.error = config
    Promise.reject(err)
  }
})

// 导出 axios 实例
export default service
